home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs04.d81
/
dismbl64.sfx
/
disassembler.doc
< prev
next >
Wrap
Text File
|
1990-02-12
|
9KB
|
197 lines
8502 ╙YMBOLIC ─ISASSMEBLER ╓6.4
BY ╩AMES ═UDGETT
═ODIFIED FOR ╠┴─╙ BY ╬ICK ╙MITH
12-03-88
┬┼╞╧╥┼ ┘╧╒ ╙╘┴╥╘
----------------
╘HERE ARE A FEW THINGS YOU MUST DO BEFORE YOU CAN RUN THE DISASSEMBLER.
╞IRST, YOU MUST SET UP A ─EFAULT ╞ILE. ╔F YOU ARE USING ─EV╨AK 128, JUST
RENAME THE FILE 'DEVPAK.DF' TO 'DEFAULTS'. ╔F YOU ARE USING ╠┴─╙, RENAME
'LADS' TO 'DEFAULTS'. ╔F YOU ARE USING A DIFFERENT ASSEMBLER OR WANT TO
CHANGE SOME OF THE OPTIONS IN THE INCLUDED DEFAULT FILES, YOU WILL HAVE
TO USE THE 'DEFAULT MAKER' PROGRAM. ╠OAD AND LIST 'DEFAULT MAKER'. ─O NOT
RUN IT UNTIL YOU HAVE CHANGED THE VARIABLE ASSIGNMENTS TO FIT YOUR NEEDS.
╔F YOU USE THE ╨╥╟ ╙OURCE ╞ILE TYPE, BE SURE TO 'TOKENIZE' THE ASSIGNMENTS
(LIST 'DEFAULT MAKER' FOR EXAMPLES). ╫HEN YOU ARE DONE CHANGING THE VARIABLE
ASSIGNMENTS, RUN THE PROGRAM. ╘HE DEFAULT FILE WILL BE CREATED.
╬EXT, YOU WILL HAVE TO DECIDED WHICH ╧PCODE ╘ABLE TO USE. ╘WO ╧PCODE ╘ABLES
ARE INCLUDED: 'STANDARD.TBL' AND 'UNDOC.TBL'. ╔F YOU WANT THE DISASSEMBLER
TO RECOGNIZE ONLY THE STANDARD INSTRUCTION SET, RENAME 'STANDARD.TBL' TO
'OPCODE.TBL'. ╔F YOU WANT UNDOCUMENTED OPCODES RECOGNIZED, RENAME 'UNDOC.TBL'
TO 'OPCODE.TBL'. ╬╧╘┼: BOTH TABLES INCLUDE THE '┴' ON ACCUMULATOR
INSTRUCTIONS (I.E. ╠╙╥ ┴). ╔F YOUR ASSEMBLER WILL NOT ACCEPT THE '┴', YOU
WILL HAVE TO USE A ╙┼╤ FILE EDITOR TO CHANGE THE TABLE. ┬E SURE TO LEAVE THE
" IN FRONT OF EACH DEFINITION. ┴N '*' IN THE TABLE INDICATES A ONE BYTE
ADDRESS/VALUE; '_' A TWO BYTE ADDRESS; AND '@' A RELATIVE ADDRESS.
╞INALLY, IF YOU WANT TO USE AN ┼QUATE ╞ILE YOU WILL HAVE TO INCLUDE THE FILE
NAME IN THE ─EFAULT ╞ILE. ┴N ┼QUATE ╞ILE IS INCLUDED. ╔F YOU WANT TO MAKE
YOUR OWN ┼QUATE ╞ILE IT MUST BE A ╙┼╤ FILE SET UP SO THAT:
1. ╘HE FIRST LINE IS THE NUMBER OF EQUATES IN THE FILE.
2. ┼ACH EQUATE ASSIGNMENT IS ON A SEPERATE LINE.
3. ┼ACH EQUATE ASSIGNMENT IS IN THE FORM 'EQUATE = ADDRESS'.
╘HERE MUST BE ONLY ONE SPACE ON EACH SIDE OF THE '='. ╘HE '=' MUST
BE USED IN THE ┼QUATE FILE (THE E$ DEFINITION IN THE ─EFAULT ╞ILE
HOLDS THE ACTUAL CHARACTER(S) USED IN THE ╙OURCE ╞ILE). ╘HE ADDRESS
MUST BE A '$' FOLLOWED BY A ONE OR TWO BYTE HEX ADDRESS.
4. ╘HE EQUATES MUST BE IN LOWEST (ADDRESS) TO HIGHEST (ADDRESS) ORDER.
┴ BINARY SEARCH IS USED TO FIND THE EQUATES, AND IF THEY ARE NOT IN
LOWEST TO HIGHEST ORDER, THEY WILL NOT BE FOUND.
╘HE ABOVE FILES MUST BE ON THE SAME DISK AS THE DISASSEMBLER.
╥╒╬╬╔╬╟ ╘╚┼ ─╔╙┴╙╙┼═┬╠┼╥
------------------------
╫HEN ALL OF THE FILES HAVE BEEN SET-UP, YOU ARE READY TO RUN THE DISASSEMBLER.
'DISASSEMBLER' IS NOT COMPILED AND VERY SLOW COMPARED TO THE COMPILED VERSION.
╔N MOST CASES YOU WILL WANT TO USE THE COMPILED VERSION ('P-DISASSEMBLER').
╫HEN YOU RUN THE PROGRAM (EITHER VERSION), THE ─EFAULT ╞ILE, THE ╧PCODE ╘ABLE,
AND AN ┼QUATE ╞ILE (IF SELECTED IN THE ─EFAULT ╞ILE) WILL BE READ IN. ╫HEN
THE DISASSEMBLER PROMPTS YOU FOR THE ┬INARY ╞ILENAME, YOU CAN SWITCH DISKS IF
NECCESSARY.
╘HE ┬INARY ╞ILENAME IS THE NAME OF THE ═╠ PROGRAM YOU WANT TO DISASSEMBLE.
╘HE ╙OURCE ╞ILENAME WILL BE THE NAME OF THE ╙OURCE ╞ILE (MAKES SENSE EH?).
┴N 'A-' WILL BE TACKED ONTO THE START OF THE ╙OURCE ╞ILENAME. ╔F THE ╙OURCE
╞ILE HAS TO BE LINKED (SEE SL AND LF$ ASSIGNMENTS IN ─EFAULT ╞ILE) THE NEXT
FILENAME WILL BE 'B-'+╙OURCE ╞ILENAME. ╘HE UNIT #'S CAN BE BETWEEN 8 AND 11.
╘HE UNCOMPILED VERSION WILL WORK WITH ╥AMDOS 128. ╚OWEVER, THE COMPILED
VERSION WILL CRASH IF ╥AMDOS 128 IS INSTALLED. ┴FTER THE FILENAMES AND UNIT
#'S ARE ENTERED, THEY ARE CHECKED TO SEE IF THEY CAUSE DISK ERRORS. ╔F THEY
DO NOT, THE ┼ND ┴DDRESS OF THE ┬INARY ╞ILE IS CALCULATED. ┘OU WILL THEN BE
ASKED FOR THE ┼NTRY ╨OINT. ╘HE DEFAULT ┼NTRY ╨OINT IS THE ╙TART ┴DDRESS. ╔F
THEY ARE THE SAME, JUST PRESS RETURN. ╔F THEY AREN'T THE SAME, ENTER THE
┼NTRY ╨OINT ADDRESS. ┴╠╠ ADDRESSES AND VALUES CAN BE ENTERED IN HEX OR
DECIMAL. ╘O ENTER A HEX ADDRESS TYPE '$XXXX' WHERE 'XXXX' IS THE HEX ADDRESS.
╘O ENTER THE ADDRESS IN DECIMAL, JUST TYPE THE DECIMAL ADDRESS. ┘OU WILL THE
BE ASKED IF THE PROGRAM HAS A BUILT-IN ┬┴╙╔├ LOADER. ╔F IT DOES, ANSWER 'Y'
AND THE ┬┴╙╔├ LOADER WILL BE CORRECTLY DISASSEMBLED.
╨┴╙╙ 1
------
╘HE FIRST PASS OF THE DISASSEMBLY WILL BEGIN. ╘HE MAIN PURPOSE OF ╨┴╙╙ 1
IS TO FIND LABELS AND THEIR TYPE (BUFFER OR CODE). ╔F YOU ARE USING AN ┼QUATE
╞ILE, THE EQUATES THAT ARE REFERENCED WILL BE MARKED. ╧NLY THE EQUATES
FOUND DURING ╨┴╙╙ 1 WILL BE INCLUDED IN THE ╙OURCE ╞ILE. ╘HERE IS A CHANCE
THAT SOME EQUATES WILL NOT BE DETECTED DURING ╨┴╙╙ 1. ┴ MISSING LABEL (
CAUSING CODE TO DISASSEMBLE AS A BUFFER) CAN CAUSE THIS. ╔F YOU SEE A
'RUN-AWAY' BUFFER, PRESS THE ╙╨┴├┼ BAR TO ENTER ╙INGLE ╙TEP ═ODE. ┼QUATES
AND LABELS WILL NOT BE SHOWN DURING ╨┴╙╙ 1.
┘OU CAN STOP THE DISASSEMBLY AT ANY TIME DURING ╨┴╙╙ 1 BY PRESSING THE ╙╨┴├┼
BAR (HOLD IT DOWN UNTIL IT STOPS). ╘HIS WILL PLACE YOU IN ═ANUAL ╙INGLE ╙TEP
═ODE. ┘OU CAN ENABLE OR DISABLE ┴UTOMATIC ╙INGLE ╙TEP ═ODE IN THE ─EFAULT
╞ILE. ┴UTOMATIC ╙╙ ═ODE WILL STOP THE DISASSEMBLY WHENEVER THERE IS:
1. ┴ CALL TO ╙┼╘╬┴═ OR ╨╞╦┼┘ (ALLOWS YOU TO SET BUFFER LABEL)
2. ┴N INSTRUCTION OTHER THAN ╩╙╥ OR ╩═╨áUSES AN ABSOLUTE ADDRESS
THAT IS BETWEEN THE ╙TART ┴DDRESS AND THE ┼ND ┴DDRESS. ╘HIS MAY
OR MAY NOT INDICATE A BUFFER.
3. ╘HERE IS NO VALID MNEMONIC THAT MATCHES THE OPCODE. ╘HIS MAY
INDICATE A BUFFER. ╔F YOU ARE USING THE STANDARD OPCODE TABLE, IT
COULD ALSO BE AN UNDOCUMENTED OPCODE.
╥EGARDLESS OF HOW YOU ENTER ╙╙ ═ODE, YOU WILL BE PROMPTED WITH:
┴>BORT - EXITS THE DISASSEMBLER.
┬>REAK ╨OINT - ALLOWS YOU TO SET AN ADDRESS, THAT WHEN REACHED DURING
╨┴╙╙ 1 WILL STOP THE DISASSEMBLY AND PUT YOU IN ╙INGLE
╙TEP ═ODE. ╔F YOU KNOW YOU WILL HAVE TO STOP THE
DISASSEMBLY SOMEWHERE (TO BEGIN OR END ┼╧╥'ING BYTES
ETC.) AND YOU DON'T WANT TO TRY AND STOP IT WITH THE
╙╨┴├┼ BAR, SET A ┬REAK ╨OINT.
├>ONTINUE - WILL DISASSEMBLE THE NEXT LINE AND STOP.
┼>╧╥ - ALLOWS YOU TO ┼XCLUSIVE ╧╥ EACH BYTE. ┼ACH BYTE, STARTING
AT THE ADDRESS YOU ENTER, WILL BE ┼╧╥'ED. ┼NTER A VALUE OF $00
TO RETURN TO NORMAL DISASSEMBLY. ╘HE PURPOSE OF THIS FEATURE
IS TO ALLOW YOU TO DISASSEMBLE CODE OR DATA THAT HAS BEEN
ENCRYPTED WITH ┼╧╥. ┘OU MUST KNOW THE START AND END ADDRESS OF
THE ENCRYPTED DATA AND THE VALUE IT IS ┼╧╥'ED WITH. ╬╧╘┼: ╘HE
PROGRAM WILL EXPECT THE CODE/DATA TO BE ENCRYPTED. ╔F YOU WANT
TO RE-ASSEMBLE THE SOURCE, YOU WILL EITHER HAVE TO REMOVE THE
ROUTINE THAT DECODES THE CODE/DATA (OR THE CALL TO IT), OR
RE-ENCRYPT THE CODE/DATA.
╠>ABEL ├ORRECTION - ALLOWS YOU TO MAKE A BUFFER OR CODE LABEL.
╤>UIT ╙╙ MODE - TURNS ╙INGLE ╙TEP ═ODE OFF AND GOES BACK TO NORMAL
DISASSEMBLY.
╘HE DISASSEMBLY WILL ALSO STOP IF A STORE TO A ╓ECTOR ADDRESS IS DETECTED.
╘HIS ALLOWS YOU TO MAKE A LABEL CORRECTION FOR THE ADDRESS PUT INTO THE
╓ECTOR. ╔N SOME CASES YOU WILL BE ABLE TO SEE THE ADDRESS AND MAKE THE
LABEL CORRECTION. ╔F YOU CAN'T TELL WHAT ADDRESS IS BEING PUT INTO THE
╓ECTOR, JUST PRESS ╥┼╘╒╥╬.
╨┴╙╙ 2
------
╧NCE THE DISASSEMBLY REACHES ╨┴╙╙ 2, YOU CAN SIT BACK AND RELAX. ╘HE
DISASSEMBLY WILL NOT STOP UNLESS THERE ARE DISK ERRORS. ╙INGLE ╙TEP ═ODE
IS ONLY ACTIVE DURING ╨┴╙╙á1. ╨┴╙╙ 2 WILL ADD EQUATES AND LABELS. ╘HE OUTPUT
WILL BE ONE OR MORE ╙┼╤ OR ╨╥╟ FILE(S) (DEPENDING ON THE SIZE OF THE ┬INARY
╞ILE, AND THE ╙OURCE ╞ILE SIZE LIMIT SET IN THE DEFAULT FILE). ╬╧╘┼ - MAKE
SURE THE DISK THAT THE ╙OURCE ╞ILE WILL BE WRITTEN TO HAS PLENTY OF FREE
SPACE. ╙OURCE ╞ILES CAN BECOME VERY LARGE.
┴╠╠ ─╧╬┼
--------
╫HEN THE DISASSEMBLY IS DONE, YOU WILL HAVE A ╙OURCE ╞ILE (EITHER ╙┼╤ OR ╨╥╟).
╔N MOST CASES, YOU SHOULD BE ABLE TO RE-ASSEMBLE IT WITHOUT ANY CHANGES (OF
COURSE, YOU CAN MAKE CHANGES IF YOU WANT TO). ┘OU MAY NEED TO ADD A FEW
PSUEDO-OPS TO ACTIVATE SPECIAL FEATURES OF YOUR ASSEMBLER. ┘OU MAY ALSO HAVE
TO CHANGE A FEW LABELS IF THE PROGRAM MODIFIES ITSELF. ╞OR EXAMPLE THERE MAY
BE SOMETHING LIKE THIS:
LB1300 LDA #$04
STA LB1307
LB1305 LDA $0000,Y
╘HERE IS NO 'LB1307'. ┘OU WILL HAVE TO CHANGE IT TO EITHER 'STA LB1305+2' OR
'STA $1307'. ╘HE LATTER WILL ONLY WORK IF NO CHANGES ARE MADE THAT AFFECT THE
ADDRESSES. ╘HE EASIEST WAY TO FIND THESE LABEL CORRECTIONS IS TO TRY TO
ASSEMBLE IT. ╘HE ASSEMBLER SHOULD GIVE YOU A WARNING THAT THE LABEL IS NOT
VALID.
╬╧╘┼╙
-----
╘HE COMPILED VERSION WILL NOT 'RUN' MORE THAN ONCE WITHOUT RE-LOADING. ╘HE
╞1 KEY HAS BE REDEFINED TO THE COMMAND TO 'RUN' IT AGAIN WITHOUT RE-LOADING.
╘HE LARGEST PROGRAM THAT CAN BE DISASSEMBLED WITH THE COMPILED VERSION IS
SOMEWHERE UNDER 16K. ╘HE LARGEST FILE ╔ HAVE TESTED IT WITH WAS 55 BLOCKS
(APPROX. 13K). ╘HE MAXIMUM NUMBER OF EQUATES THAT CAN BE USED WITH THE
COMPILED VERSION IS 200. ╘HE UNCOMPILED VERSION WILL HANDLE SLIGHTLY LARGER
FILES AND MORE EQUATES, BUT YOU GIVE UP ┴ ╠╧╘ OF SPEED.
╔F YOU HAVE ANY QUESTION, COMMENTS OR SUGGESTIONS YOU CAN REACH ME ON ╤╠╔╬╦
BY EMAILING '╥OCKINROLL'.
╩AMES ═UDGETT